ビューの処理
この項の内容は次のとおりです。
ビューの作成
ビューを作成するには、SQL文CREATE VIEWを使用します。SQL文の構文については、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』を参照してください。
CREATE VIEW ViewName AS SelectQuery;
これによって、ビューで使用される列がディテール表から選択されます。
たとえば、表t1
からビューを作成します。
CREATE VIEW v1 AS SELECT * FROM t1;
次に、表t1
に対する集計問合せからビューを作成します。
CREATE VIEW v1 (max1) AS SELECT max(x1) FROM t1;
CREATE VIEW文でのSELECT問合せ
マテリアライズド・ビューの内容の定義に使用するSELECT問合せは、トップ・レベルのSQL SELECT文(『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』のSQL文に関する説明を参照)に類似していますが、次の制限があります。
- ビュー定義内のSELECT *問合せは、ビュー作成時に拡張されます。ビューが作成された後に追加された列は、ビューに反映されません。
- ビューを作成するSELECT文で、次の句は使用できません。
- SELECT構文のリストの各式には、一意の名前が必要です。列の別名が定義されていないかぎり、その列の単純名が使用されます。ROWIDは式とみなされるため、別名が必要です。
- SELECT FOR UPDATEまたはSELECT FOR INSERT文はビューに対しては使用できません。
- 特定のTimesTen問合せ制限は、非マテリアライズド・ビューの作成時に確認されません。これらの制限に違反しているビューの作成が可能な場合がありますが、その後、実行した文でこのビューが参照されると、エラーが戻されます。
ビューおよびビューのディテール表に対する制限
ビューには、次の制限があります。
- ビューがSELECT文のFROM句で参照されると、ビューの名前は、その定義によって解析時に導出表に置き換えられます。導出表がないと、ビューのすべての句を元のSELECT内の同じ句にマージして適切な問合せにすることができない場合は、この導出表の内容がマテリアライズド化されます。たとえば、ビューと参照しているSELECTの両方で集計が指定されている場合、ビューは、その結果がSELECTの他の表と結合される前にマテリアライズ化されます。
- ビューは、DROP TABLE文では破棄できません。DROP VIEW文を使用する必要があります。
- ビューは、ALTER TABLE文では変更できません。
- ビューの参照は、ディテール表の破棄または変更が原因で失敗する可能性があります。
ビューの破棄
DROP VIEW文で、指定したビューが破棄されます。
次の文では、CustOrder
ビューが破棄されます。
DROP VIEW CustOrder;